from django.core.management.base import BaseCommand
from ai_text.models import PromptTemplate

class Command(BaseCommand):
    help = '更新提示词模板，为每个内容类型和语言风格组合创建新的详细模板'

    def handle(self, *args, **options):
        # 定义内容类型和语言风格的映射
        content_types = [
            ('novel', '小说'),
            ('poetry', '诗歌'),
            ('script', '剧本'),
            ('story', '故事'),
            ('copy', '文案'),
            ('paper', '论文'),
            ('summary', '摘要'),
            ('reference', '参考文献'),
            ('report', '研究报告'),
        ]
        
        language_styles = [
            ('casual', '随意'),
            ('formal', '正式'),
            ('professional', '专业'),
            ('creative', '创意'),
            ('academic', '学术'),
            ('poetic', '诗意'),
            ('humorous', '幽默'),
            ('serious', '严肃'),
        ]
        
        # 定义每个内容类型和语言风格组合的详细模板
        templates = {
            # 小说模板
            ('novel', 'casual'): "请写一篇关于{topic}的轻松小说，要求情节有趣，语言通俗易懂，适合大众阅读。故事应该包含引人入胜的开头、跌宕起伏的情节发展和令人满意的结局。字数在1500-3000字之间。",
            ('novel', 'formal'): "请创作一部关于{topic}的正式小说，要求结构严谨，语言规范，具有较高的文学价值。作品应包含深刻的主题思想、鲜明的人物形象和精巧的情节设计。字数在3000-5000字之间。",
            ('novel', 'professional'): "请撰写一部关于{topic}的专业小说，要求情节设计巧妙，人物刻画深入，符合出版标准。作品应具备商业价值和艺术价值，语言流畅，逻辑清晰。字数在5000-8000字之间。",
            ('novel', 'creative'): "请创作一篇关于{topic}的创意小说，要求想象力丰富，情节新颖独特，能够给读者带来全新的阅读体验。可以尝试不同的叙事手法和结构形式。字数在2000-4000字之间。",
            ('novel', 'academic'): "请写一篇关于{topic}的学术性小说，要求结合相关学术理论，通过故事情节展现学术思想。作品应具有教育意义和启发性。字数在3000-5000字之间。",
            ('novel', 'poetic'): "请创作一部关于{topic}的诗意小说，要求语言优美，意境深远，富有诗意和韵律感。作品应注重情感表达和氛围营造。字数在2000-3500字之间。",
            ('novel', 'humorous'): "请编写一篇关于{topic}的幽默小说，要求风趣幽默，令人捧腹，同时寓意深刻。作品应通过夸张和讽刺手法展现主题。字数在1500-2500字之间。",
            ('novel', 'serious'): "请创作一部关于{topic}的严肃小说，要求主题深刻，情节紧凑，人物形象鲜明。作品应反映社会现实或人性深度。字数在4000-6000字之间。",
            
            # 诗歌模板
            ('poetry', 'casual'): "请写一首关于{topic}的轻松诗歌，要求朗朗上口，富有情趣，适合传唱。可以采用自由诗或押韵诗的形式，表达积极向上的情感。诗句数量在8-20行之间。",
            ('poetry', 'formal'): "请创作一首关于{topic}的正式诗歌，要求格律工整，用词典雅，具有古典诗歌的韵味。可以采用五言、七言或其他古典诗体。诗句数量在12-30行之间。",
            ('poetry', 'professional'): "请撰写一首关于{topic}的专业诗歌，要求技巧娴熟，意境深远，符合诗歌创作规范。作品应体现诗人的艺术修养和创作水平。诗句数量在15-25行之间。",
            ('poetry', 'creative'): "请创作一首关于{topic}的创意诗歌，要求形式新颖，不拘一格，可以尝试现代诗、散文诗等创新形式。作品应具有独特的艺术表现力。诗句数量在10-20行之间。",
            ('poetry', 'academic'): "请写一首关于{topic}的学术性诗歌，要求结合相关学术理论，通过诗歌形式表达学术观点。作品应具有教育意义和启发性。诗句数量在15-25行之间。",
            ('poetry', 'poetic'): "请创作一首关于{topic}的优美诗歌，要求意境深远，韵律和谐，富有诗意。作品应注重语言的美感和情感的表达。诗句数量在12-20行之间。",
            ('poetry', 'humorous'): "请编写一首关于{topic}的幽默诗歌，要求风趣诙谐，令人忍俊不禁，同时富有哲理。可以采用打油诗或其他轻松的诗体形式。诗句数量在8-16行之间。",
            ('poetry', 'serious'): "请创作一首关于{topic}的严肃诗歌，要求主题深刻，情感真挚，能够引发读者思考。作品应反映社会现实或人生感悟。诗句数量在15-25行之间。",
            
            # 剧本模板
            ('script', 'casual'): "请编写一个关于{plot}的{type}剧本，要求对话生动，场景描述清晰，适合轻松娱乐。剧本应包含3-5个场景，时长约为5-10分钟。需要明确的角色设定和情节发展。",
            ('script', 'formal'): "请创作一个关于{plot}的{type}正式剧本，要求结构完整，语言规范，符合戏剧创作标准。剧本应包含完整的三幕结构，角色性格鲜明，冲突明显。时长约为30-60分钟。",
            ('script', 'professional'): "请撰写一个关于{plot}的专业剧本，要求技巧娴熟，情节紧凑，适合商业演出。剧本应具备市场价值和艺术价值，语言流畅，结构清晰。时长约为60-90分钟。",
            ('script', 'creative'): "请创作一个关于{plot}的创意剧本，要求形式新颖，不拘一格，可以尝试实验性戏剧形式。剧本应具有独特的艺术表现力和创新精神。时长约为20-40分钟。",
            ('script', 'academic'): "请写一个关于{plot}的学术性剧本，要求结合相关学术理论，通过戏剧形式展现学术思想。剧本应具有教育意义和启发性。时长约为30-50分钟。",
            ('script', 'poetic'): "请创作一个关于{plot}的诗意剧本，要求语言优美，意境深远，富有诗意和韵律感。剧本应注重情感表达和氛围营造。时长约为20-40分钟。",
            ('script', 'humorous'): "请编写一个关于{plot}的幽默剧本，要求风趣幽默，令人捧腹，同时寓意深刻。剧本应通过夸张和讽刺手法展现主题。时长约为15-30分钟。",
            ('script', 'serious'): "请创作一个关于{plot}的严肃剧本，要求主题深刻，情节紧凑，反映社会现实或人性深度。剧本应具有思想性和艺术性。时长约为40-60分钟。",
            
            # 故事模板
            ('story', 'casual'): "请讲述一个关于{topic}的故事，要求情节完整，有起承转合，语言通俗易懂，适合大众阅读。故事应该有趣味性，能够吸引读者。字数在800-1500字之间。",
            ('story', 'formal'): "请创作一个关于{topic}的正式故事，要求结构严谨，语言规范，具有文学价值。故事应包含深刻的主题思想和精巧的情节设计。字数在1500-2500字之间。",
            ('story', 'professional'): "请撰写一个关于{topic}的专业故事，要求情节设计巧妙，人物刻画深入，符合出版标准。故事应具备商业价值和艺术价值。字数在2000-3500字之间。",
            ('story', 'creative'): "请创作一个关于{topic}的创意故事，要求想象丰富，情节新颖，引人入胜。可以尝试不同的叙事手法和结构形式。字数在1000-2000字之间。",
            ('story', 'academic'): "请写一个关于{topic}的学术性故事，要求结合相关学术理论，通过故事情节展现学术思想。故事应具有教育意义和启发性。字数在1500-2500字之间。",
            ('story', 'poetic'): "请创作一个关于{topic}的诗意故事，要求语言优美，意境深远，富有诗意和韵律感。故事应注重情感表达和氛围营造。字数在1200-2000字之间。",
            ('story', 'humorous'): "请编写一个关于{topic}的幽默故事，要求风趣幽默，令人捧腹，寓意深刻。故事应通过夸张和讽刺手法展现主题。字数在800-1500字之间。",
            ('story', 'serious'): "请创作一个关于{topic}的严肃故事，要求主题深刻，情节紧凑，反映社会现实或人性深度。故事应具有思想性和艺术性。字数在1800-3000字之间。",
            
            # 文案模板
            ('copy', 'casual'): "请为{product}撰写一段吸引人的广告文案，突出产品的{feature}特点，要求简洁有力，能激发消费者的购买欲望。文案应通俗易懂，朗朗上口。字数在100-300字之间。",
            ('copy', 'formal'): "请为{product}撰写一份正式的广告文案，详细介绍产品的{feature}功能和优势，要求信息准确，逻辑清晰，符合商业文案标准。字数在300-500字之间。",
            ('copy', 'professional'): "请为{product}撰写一份专业的营销文案，要求深入分析产品特点，精准定位目标用户，具备商业价值和说服力。文案应结构完整，语言精练。字数在400-600字之间。",
            ('copy', 'creative'): "请为{product}撰写一份创意广告文案，要求形式新颖，不拘一格，能够吸引目标用户的注意力。可以尝试不同的表达方式和传播形式。字数在200-400字之间。",
            ('copy', 'academic'): "请为{product}撰写一份学术性介绍文案，要求结合相关理论，深入分析产品的{feature}技术原理和应用价值。文案应具有专业性和权威性。字数在500-800字之间。",
            ('copy', 'poetic'): "请为{product}撰写一份富有诗意的宣传文案，要求语言优美，意境深远，能够唤起消费者的情感共鸣。文案应注重美感和感染力。字数在200-400字之间。",
            ('copy', 'humorous'): "请为{product}撰写一份幽默风格的广告文案，要求风趣诙谐，令人印象深刻，同时突出产品的{feature}卖点。文案应轻松有趣，易于传播。字数在150-300字之间。",
            ('copy', 'serious'): "请为{product}撰写一份严肃的介绍文案，要求突出产品的{feature}专业性和可靠性，面向专业用户群体。文案应信息详实，数据准确。字数在400-600字之间。",
            
            # 论文模板
            ('paper', 'casual'): "请撰写一篇关于{topic}的学术论文，要求包含摘要、引言、研究方法、结果分析和结论等部分，语言通俗易懂，适合初学者阅读。字数在3000-5000字之间。",
            ('paper', 'formal'): "请撰写一篇关于{topic}的正式学术论文，要求论点明确，论据充分，结构严谨，符合学术规范。论文应包含完整的文献综述和数据分析。字数在5000-8000字之间。",
            ('paper', 'professional'): "请写一篇关于{topic}的专业论文，要求研究深入，分析透彻，具有实际应用价值。论文应体现作者的专业水平和研究能力。字数在6000-10000字之间。",
            ('paper', 'creative'): "请撰写一篇关于{topic}的创新性学术论文，要求研究方法新颖，观点独特，能够推动学术发展。论文应具有前瞻性和启发性。字数在5000-8000字之间。",
            ('paper', 'academic'): "请撰写一篇关于{topic}的高水平学术论文，要求严格按照学术期刊的发表标准，包含详实的数据分析和理论论证。字数在8000-12000字之间。",
            ('paper', 'poetic'): "请写一篇关于{topic}的学术随笔，要求语言优美，思路清晰，将学术性与文学性相结合。文章应具有可读性和启发性。字数在3000-5000字之间。",
            ('paper', 'humorous'): "请撰写一篇关于{topic}的趣味性学术论文，要求在严谨的学术框架内，以轻松幽默的方式呈现研究内容。文章应寓教于乐。字数在4000-6000字之间。",
            ('paper', 'serious'): "请写一篇关于{topic}的严肃学术论文，要求研究深入，论证严密，具有重要的学术价值和社会意义。字数在7000-10000字之间。",
            
            # 摘要模板
            ('summary', 'casual'): "请用通俗易懂的语言为{topic}写一份摘要，要求重点突出，便于理解，适合大众阅读。摘要应包含核心观点和主要结论。字数在200-400字之间。",
            ('summary', 'formal'): "请为{topic}撰写一份正式摘要，要求内容准确，条理清晰，语言简练，符合学术摘要标准。摘要应包含研究目的、方法、结果和结论。字数在300-500字之间。",
            ('summary', 'professional'): "请为{topic}撰写一份专业摘要，要求技术性强，信息量大，准确反映核心内容。摘要应具备专业性和权威性。字数在400-600字之间。",
            ('summary', 'creative'): "请为{topic}撰写一份创意摘要，要求形式新颖，表达独特，能够吸引读者的注意力。摘要应具有创新性和可读性。字数在250-450字之间。",
            ('summary', 'academic'): "请为{topic}撰写一份学术摘要，要求严格按照学术规范，准确概括研究内容和主要发现。摘要应具备学术性和严谨性。字数在350-550字之间。",
            ('summary', 'poetic'): "请为{topic}撰写一份富有诗意的摘要，要求语言优美，意境深远，能够唤起读者的兴趣。摘要应注重美感和感染力。字数在200-400字之间。",
            ('summary', 'humorous'): "请为{topic}撰写一份幽默风格的摘要，要求风趣诙谐，令人印象深刻，同时准确传达核心信息。摘要应轻松有趣，易于理解。字数在250-400字之间。",
            ('summary', 'serious'): "请为{topic}撰写一份严肃摘要，要求内容详实，重点突出，准确反映研究的重要性和价值。摘要应具有权威性和说服力。字数在400-600字之间。",
            
            # 参考文献模板
            ('reference', 'casual'): "请根据{sources}整理一份关于{topic}的参考文献列表，要求格式规范，包含作者、标题、出处、时间等基本信息，适合初学者使用。文献数量在10-20条之间。",
            ('reference', 'formal'): "请为{topic}整理一份正式的参考文献列表，要求严格按照学术规范，包含完整的文献信息和标准格式。文献应权威可靠，数量在20-30条之间。",
            ('reference', 'professional'): "请为{topic}整理一份专业参考文献列表，要求文献质量高，来源权威，具有重要的学术价值和参考意义。文献数量在25-40条之间。",
            ('reference', 'creative'): "请为{topic}整理一份创新性参考文献列表，要求包含最新的研究成果和前沿文献，体现学科发展趋势。文献数量在15-25条之间。",
            ('reference', 'academic'): "请为{topic}整理一份高水平学术参考文献列表，要求严格按照学术期刊的发表标准，包含核心期刊和权威文献。文献数量在30-50条之间。",
            ('reference', 'poetic'): "请为{topic}整理一份文学性参考文献列表，要求包含相关的文学作品和理论著作，体现文学价值和艺术特色。文献数量在15-25条之间。",
            ('reference', 'humorous'): "请为{topic}整理一份趣味性参考文献列表，要求包含轻松易懂的相关资料，适合大众阅读和参考。文献数量在10-20条之间。",
            ('reference', 'serious'): "请为{topic}整理一份严肃的参考文献列表，要求文献权威，内容严谨，具有重要的学术价值和社会意义。文献数量在25-40条之间。",
            
            # 研究报告模板
            ('report', 'casual'): "请撰写一份关于{topic}的研究报告，要求包含研究背景、目标、方法、数据分析和建议等部分，语言通俗易懂，适合大众阅读。字数在2000-3500字之间。",
            ('report', 'formal'): "请撰写一份关于{topic}的正式研究报告，要求结构完整，内容详实，符合学术研究报告标准。报告应包含详细的文献综述和数据分析。字数在4000-6000字之间。",
            ('report', 'professional'): "请撰写一份关于{topic}的专业研究报告，要求研究深入，分析透彻，具有实际应用价值。报告应体现专业水平和研究能力。字数在5000-8000字之间。",
            ('report', 'creative'): "请撰写一份关于{topic}的创新性研究报告，要求研究方法新颖，观点独特，能够推动相关领域发展。报告应具有前瞻性和启发性。字数在3500-5500字之间。",
            ('report', 'academic'): "请撰写一份关于{topic}的高水平研究报告，要求严格按照学术研究标准，包含详实的数据分析和理论论证。字数在6000-10000字之间。",
            ('report', 'poetic'): "请撰写一份关于{topic}的文学性研究报告，要求语言优美，思路清晰，将学术性与文学性相结合。报告应具有可读性和启发性。字数在2500-4000字之间。",
            ('report', 'humorous'): "请撰写一份关于{topic}的趣味性研究报告，要求在严谨的研究框架内，以轻松幽默的方式呈现研究内容。报告应寓教于乐。字数在3000-5000字之间。",
            ('report', 'serious'): "请撰写一份关于{topic}的严肃研究报告，要求研究深入，论证严密，具有重要的学术价值和社会意义。字数在5000-8000字之间。",
        }
        
        # 删除现有的所有模板
        PromptTemplate.objects.all().delete()
        self.stdout.write(self.style.SUCCESS('已删除所有现有模板'))
        
        # 创建新的模板
        created_count = 0
        for content_type, content_label in content_types:
            for language_style, style_label in language_styles:
                template_key = (content_type, language_style)
                if template_key in templates:
                    template_text = templates[template_key]
                    PromptTemplate.objects.create(
                        content_type=content_type,
                        language_style=language_style,
                        template=template_text
                    )
                    created_count += 1
                    self.stdout.write(f'创建模板: {content_label} - {style_label}')
        
        self.stdout.write(self.style.SUCCESS(f'成功创建 {created_count} 个新模板'))